<?php
	//
	function array_walk_recursive(&$input, $funcname){
	    if (!is_callable($funcname)) {
	        if (is_array($funcname)) {
	            $funcname = $funcname[0] . '::' . $funcname[1];
	        }
	        user_error('array_walk_recursive() Not a valid callback ' . $funcname, E_USER_WARNING);
	        return;
	    }
		//
	    if (!is_array($input) && !is_object($input)) {
	        user_error('array_walk_recursive() The argument should be an array or an object', E_USER_WARNING);
	        return;
	    }
		//
	    $args = func_get_args();
		//
	    foreach ($input as $key => $item) {
	        $callArgs = $args;
	        if (is_array($item) || is_object($item)) {
	            $thisCall = 'array_walk_recursive';
	            $callArgs[1] = $funcname;
	        } else {
	            $thisCall = $funcname;
	            $callArgs[1] = $key;
	        }
	        $callArgs[0] = &$input[$key];
	        call_user_func_array($thisCall, $callArgs);
	    }    
	}
	//
?>